// for class based (OO) access to ped functions

#pragma once
#include <windows.h>

#include "../../ScriptHook/ScriptingTypes.h"
#include "../../ScriptHook/Scripting.h"
#include "../ScriptingTypes.h"
#include "../ScriptingEnums.h"
#include "../Log.h"

namespace GTA
{
	public ref class GameObject
	{
	private:
		u32 _Handle;
	protected:

	public:
		GameObject::GameObject();
		GameObject::GameObject(u32 handle);
		GameObject::GameObject(Scripting::Object obj);

		property u32 Handle
		{
			u32 get();
			void set(u32 handle);
		};

		property Scripting::Object Base
		{
			Scripting::Object get();
			void set(Scripting::Object obj);
		};

		virtual property GTA::Vector3^ GameObject::Coordinates
		{
			GTA::Vector3^ get();
			void set(GTA::Vector3^ pos);
		};

		virtual property GTA::Quaternion^ GameObject::Quaternion
		{
			GTA::Quaternion^ get();
			void set(GTA::Quaternion^ pos);
		}

		virtual property f32 Heading
		{
			f32 get();
			void set(f32 heading);
		};

		property f32 Health
		{
			f32 get();
			//void set(f32 health);
		};

		property GTA::eModel Model
		{
			GTA::eModel get();
		};




		virtual bool Exists();
		static bool Exists(GameObject^ obj);

	};
};